package com.localShare.manager;

import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;

import com.localShare.R;
import com.localShare.receiver.IntimateDeviceAdminReceiver;

/**
 * Created by 883564
 * on 2016/5/4.
 * 锁屏管理类
 */
public class LockScreenManager {
    //设备管理器
    private DevicePolicyManager devicePolicyManager;
    //权限关联组件
    private ComponentName componentName;
    //上下文
    private Context context;

    /**
     * 构造器
     * @param context 上下文
     */
    public LockScreenManager(Context context){
        //上下文初始化
        this.context=context;
        //获取设备管理器实例
        devicePolicyManager=(DevicePolicyManager)context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        //获取关联组件
        componentName=new ComponentName(context, IntimateDeviceAdminReceiver.class);
    }
    /**
     * 锁屏功能需要手动申请激活设备管理器权限，通过此方法打开申请激活设备管理器界面。
     * 该方法参考于官方demo-\ApiDemos\src\com\example\android\apis\app\DeviceAdminSample
     * 参考API DevicePolicyManager
     */
    public void permissionRequest(){
        //意图初始化，参照官方Demo完成
        Intent intent=new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,componentName);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,context.getString(R.string.app_name));
        context.startActivity(intent);
    }

    /**
     * 设备管理器权限移除
     */
    public void permissionCancel(){
        //将权限从设备管理器移除
        devicePolicyManager.removeActiveAdmin(componentName);
    }

    /**
     * 判断是否有设备管理器权限
     * @return true 有；false 没有
     */
    public boolean canLock(){
        return devicePolicyManager.isAdminActive(componentName);
    }

    /**
     * 锁屏，注意如果此时没有权限会报错，所以应提前判断
     */
    public void lock(){
        devicePolicyManager.lockNow();
    }

}
